package com.docparser.util;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * XML操作工具类，为文档解析系统提供通用的XML功能。
 * 提供跨组件使用的XML处理功能。
 */
public class XmlUtils {
    /**
     * 创建支持命名空间的DocumentBuilder用于解析XML内容。
     * 这对于处理Office Open XML数学元素特别重要。
     * 
     * @return 配置好的DocumentBuilder实例
     * @throws Exception 如果创建失败
     */
    public static DocumentBuilder createDocumentBuilder() throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        return factory.newDocumentBuilder();
    }

    /**
     * 从数学元素中提取文本内容。
     * 专门查找Office Open XML数学元素中包含实际文本的'm:t'节点。
     * 
     * @param element 要提取文本的XML元素
     * @return 元素的文本内容，如果未找到则返回空字符串
     */
    public static String getTextContent(Element element) {
        NodeList children = element.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            if ("m:t".equals(child.getNodeName())) {
                return child.getTextContent();
            }
        }
        return "";
    }
}
